<?php
$numbers = array(5, 2, 4, 3, 1, 6, 7, 8, 9, 10);
$len = count($numbers);
$last = $len;
//构建遍历循环
for ($i = 0; $i < $len - 1; $i++) {
    for ($j = 0; $j < $len - $i - 1; $j++) {
        //对比两个相邻元素
        if ($numbers[$j] > $numbers[$j + 1]) {
            //如果如果第一个比第二个大，就交换它们的位置。 【顺序】
            //倒序反之：如果第一个比第二个小，就交换它们的位置。

            list($numbers[$j + 1], $numbers[$j]) = array($numbers[$j], $numbers[$j + 1]);
            $last = $len;
        }
    }

    //如果长度和最后位置不匹配，意味着还有数据进行交换。
    if ($last != $len) {
        $len = $last;
        $i = -1;//重置外层循环，因为接下来会有`i++`，所以设置为 `-1`
    }
}

print_r($numbers);
/*
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
)
 */